package com.hzz.dto.patrol;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.hzz.framework.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;

@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@ApiModel("巡查任务日志 DTO")
public class TaskLogDto extends BaseDto {
    /** id */
    Long id;
    
    /** 发布对象（一期系统只有本级河道可选） */
    @NotNull(message = "target不能为空")
    @Size(max = 50, message = "target最大50字符")
    String target;
    
    /** 所在河道 */
    @NotNull(message = "riverCourseCode不能为空")
    @Size(max = 50, message = "riverCourseCode最大50字符")
    String riverCourseCode;
    
    String riverCourseName;
    
    /** 任务类型（临时任务、常规任务、紧急任务） */
    @NotNull(message = "taskType不能为空")
    @Size(max = 20, message = "taskType最大20字符")
    String taskType;
    
    /** 执行人角色（巡查员、河长） */
    @NotNull(message = "executorRole不能为空")
    @Size(max = 20, message = "executorRole最大20字符")
    String executorRole;
    
    /** 任务开始时间 */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date startTime;
    
    /** 任务有效结束时间 */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date endTime;
    
    /**
     * 任务实际实行开始时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date excStartTime;
    
    /**
     * 任务实际执行完成时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date excEndTime;
    
    /** 任务状态（未巡查、已巡查，默认是未巡查） */
    @NotNull(message = "taskStatus不能为空")
    @Size(max = 10, message = "taskStatus最大10字符")
    String taskStatus;
    
    /** 任务内容 */
    @NotNull(message = "taskContent不能为空")
    @Size(max = 100, message = "taskContent最大100字符")
    String taskContent;
    
    /** 巡查轨迹（轨迹坐标点集合）([{lon,lat},{lon,lat}...]) */
    @Size(max = 65535, message = "patrolTrack最大65535字符")
    String patrolTrack;
    
    /**
     * 巡查公里数
     */
    @Size(max = 55, message = "patrolKilometer最大55字符")
    String patrolKilometer;
    
    /**
     * 巡查人账号（巡河时由app端传入）
     */
    @Size(max = 55, message = "executorAccount最大55字符")
    String executorAccount;
    
    /**
     * 巡查人姓名（巡河时由app端传入）
     */
    @Size(max = 255, message = "executorName最大255字符")
    String executorName;
    
    /**
     * 日志删除标识(默认0未删除，1已删除)
     */
    Integer logDelFlag;
    
    /** 创建者河长级别（省、市、区、街、村） */
    @Size(max = 20, message = "creatorLevel最大20字符")
    String creatorLevel;
    
    /** 备注 */
    @Size(max = 255, message = "memo最大255字符")
    String memo;
    
    /** 删除标识(0未删除1已删除) */
    Integer delFlag;
    
    /** 建立者id */
    Long createId;
    
    /** 更新时间 */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date dateUpdated;
    
    /** 创建时间 */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date dateCreated;
    
    /**
     * id
     */
    Long eventId;
    
    /**
     * 督办完成期限
     */
    @JSONField(format = "yyyy-MM-dd")
    Date dateDeadline;
    
    /**
     * 巡查时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date datePatrol;
    
    /**
     * 责任单位id
     */
    Long dutyOrgId;
    
    /**
     * 责任单位名称
     */
    @Size(max = 55, message = "dutyOrgName最大55字符")
    String dutyOrgName;
    
    /**
     * 责任人id
     */
    Long dutyUserId;
    
    /**
     * 责任人名称
     */
    @Size(max = 55, message = "dutyUserName最大55字符")
    String dutyUserName;
    
    /**
     * 事件描述
     */
    @Size(max = 55, message = "eventInfo最大55字符")
    String eventInfo;
    
    /**
     * 事件类型(无问题,河岸倾倒垃圾,生活非法排污,工业区非法排污,非法采砂,河道及禁养区非法养殖,河湖岸线乱搭乱建,电鱼毒鱼,饮用水源地污染,河面漂浮物及垃圾,面源污染,重金属污染,场镇污水处理厂未建设,场镇污水处理厂未运行,场镇污水处理厂处理不达标,场镇污水管网收集率不高,电站截留生态流量,其他问题)
     */
    @Size(max = 55, message = "eventType最大55字符")
    String eventType;
    
    /**
     * 关注状态0否1是
     */
    Integer followState;
    
    /**
     * 排序
     */
    Integer orderNo;
    
    /**
     * 巡查任务id
     */
    Long patrolTaskId;
    
    /**
     * 上报时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date reportingDate;
    
    /**
     * 上报类型(0巡河事件,1公众投诉,2重点项目,3常规任务,4紧急任务)
     */
    Integer reportingType;
    
    /**
     * 上报人id
     */
    Long reportingUserId;
    
    /**
     * 上报人名称
     */
    @Size(max = 55, message = "reportingUserName最大55字符")
    String reportingUserName;
    
    /**
     * 上报人联系电话
     */
    @Size(max = 55, message = "reportingUserCellphone最大15字符")
    String reportingUserCellphone;
    
    /**
     * 上报河道id
     */
    @Size(max = 55, message = "riverId最大55字符")
    String riverId;
    
    /**
     * 上报河道名称
     */
    @Size(max = 55, message = "riverName最大55字符")
    String riverName;
    
    /**
     * 事件进度(0上报,1处理,2结案)
     */
    Integer state;
    
    /**
     * 督办单号
     */
    @Size(max = 55, message = "supervisionCode最大55字符")
    String supervisionCode;
    
    /**
     * 督办联系人电话
     */
    @Size(max = 55, message = "supervisionContactCellphone最大55字符")
    String supervisionContactCellphone;
    
    /**
     * 督办联系人id
     */
    Long supervisionContactId;
    
    /**
     * 督办联系人名称
     */
    @Size(max = 55, message = "supervisionContactName最大55字符")
    String supervisionContactName;
    
    /**
     * 督办内容
     */
    @Size(max = 255, message = "supervisionContent最大255字符")
    String supervisionContent;
    
    /**
     * 督办发起时间
     */
    @JSONField(format = "yyyy-MM-dd")
    Date supervisionDate;
    
    /**
     * 督办要求
     */
    @Size(max = 1255, message = "supervisionDemand最大1255字符")
    String supervisionDemand;
    
    /**
     * 督办对象(0个人,1机构)
     */
    Integer supervisionTarget;
    
    /**
     * 督办标题
     */
    @Size(max = 55, message = "supervisionTitle最大55字符")
    String supervisionTitle;
    
    /**
     * 督办类型(0巡河事件,1公众投诉,2重点项目,3常规任务,4紧急任务)
     */
    Integer supervisionType;
    
    /**
     * 事件处理行政区划id
     */
    @Size(max = 85, message = "treatmentAreaId最大85字符")
    String treatmentAreaId;
    
    /**
     * 事件处理行政区划名称
     */
    @Size(max = 255, message = "treatmentAreaName最大255字符")
    String treatmentAreaName;
    
    /**
     * 事件处理备注
     */
    @Size(max = 55, message = "treatmentMemo最大55字符")
    String treatmentMemo;
    
    /**
     * 事件处理机构id
     */
    Long treatmentOrgId;
    
    /**
     * 事件处理机构名称
     */
    @Size(max = 55, message = "treatmentOrgName最大55字符")
    String treatmentOrgName;
    
    /**
     * 事件处理后照片
     */
    @Size(max = 1255, message = "treatmentPostPics最大1255字符")
    String treatmentPostPics;
    
    /**
     * 事件处理前照片
     */
    @Size(max = 1255, message = "treatmentPrePics最大1255字符")
    String treatmentPrePics;
    
    /**
     * 事件处理河段id
     */
    Long treatmentReachId;
    
    /**
     * 事件处理河段名称
     */
    @Size(max = 55, message = "treatmentReachName最大55字符")
    String treatmentReachName;
    
    /**
     * 事件处理方式:0直接处理,1分配处理,2报河长办处理,3报上级河长处理
     */
    Integer treatmentType;
    
    /**
     * 事件处理人员id
     */
    Long treatmentUserId;
    
    /**
     * 事件处理人员角色
     */
    @Size(max = 1, message = "treatmentUserJob最大55字符")
    String treatmentUserJob;
    
    /**
     * 事件处理人员名称
     */
    @Size(max = 55, message = "treatmentUserName最大55字符")
    String treatmentUserName;
    
    /**
     * 版本号
     */
    Integer version;
    
    /**
     * 结果反馈
     */
    @Size(max = 255, message = "resultFeedback最大255字符")
    String resultFeedback;
    
    /**
     * 经度
     */
    String longitude;
    
    /**
     * 纬度
     */
    String latitude;
    
    /**
     * 总数
     */
    Integer total;
    
    /**
     * 正常数
     */
    Integer normal;
    
    String areaIds;
    
    String areaNames;
    
    /**
     * 日志状态，正常，异常
     */
    String status;
}
